package com.xs.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xs.common.R;
import com.xs.domain.Staff;
import com.xs.domain.dto.StaffCollectDTO;
import com.xs.domain.dto.StaffDTO;

import java.util.List;

/**
* @author admin
* @description 针对表【staff(乐谱)】的数据库操作Service
* @createDate 2023-01-11 17:02:39
*/
public interface StaffService extends IService<Staff> {

 Page<StaffDTO> selectUpdateStaffByConsumerId(Page<StaffDTO> page,Integer consumerId);

    /**
     * 根据乐谱集id查找乐谱
     * @param page
     * @param staffListId
     * @return
     */
   Page<StaffDTO> selectStaff(Page<StaffDTO> page, Integer staffListId,String name);

    /**
     * 根据乐谱集id查找乐谱不分页
     * @param staffListId
     * @return
     */
    R selectStaffs(Integer staffListId);

    /**
     * 分页查找用户信息
     * @param pageNum
     * @param pageSize
     * @param name
     * @return
     */
    R findPage(Integer pageNum, Integer pageSize,String name,Integer consumerId);

    /**
     * 编辑
     * @param staffDTO
     * @return
     */
    R updateStaff(StaffDTO staffDTO);

    /**
     * 删除
     * @param id
     * @return
     */
    R deleteStaff(Integer id);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    R deleteBathIds(List<Integer> ids);

    /**
     * 根据用户id查找歌曲
     * @param consumerId
     * @return
     */
   R selectByConsumerIds(Integer consumerId);

    /**
     * 根据乐谱id查找乐谱对象
     * @param staffId
     * @return
     */
    R selectByStaffIds(Integer staffId);

    /**
     * 查询用户、乐谱集、乐谱总数
     * @return
     */
    List<Integer> staffCount();


   /**
    *根据乐谱名模糊查询
    * @return
    */
   R likeStaffName(String name);

    /**
     * 最新乐谱
     * @param
     * @return
     */
    R  newStaffs();

    /**
     * 最热乐谱
     * @param
     * @return
     */
    R hotStaffs();

    /**
     * 根据用户id查询该用户收藏的乐谱详情
     * @return
     */
    R likeStaff(Integer consumerId);

    /**
     * 根据用户id查询该用户收藏的乐谱详情分页
     * @param page
     * @param consumerId
     * @return
     */
    Page<StaffCollectDTO> likeStaffPage(Page<StaffCollectDTO> page, Integer consumerId);

    /**
     * 管理员审批
     * @param staffId
     * @return
     */
    R changeStaffType(Integer staffId,Integer type);

 /**
  * 下载数量加一
  * @param staffId
  * @return
  */
    R addViewCount(Integer staffId);
}
